Программа для расчёта конструкций RFEM 6 является основой нашей модульной системы программного обеспечения. Основная программа RFEM 6 используется для задания конструкций, материалов и нагрузок плоских и пространственных конструктивных систем, состоящих из плит, стен, оболочек и стержней. Программа также позволяет создавать комбинированные конструкции, а также моделировать тела и контактные элементы.
RSTAB 9 - это мощная программа для расчёта и проектирования 3D конструкций балок, каркасов или ферм, которая которая помогает инженерам-строителям соответствовать современным требованиям и отражает последние тенденции в области строительного проектирования.
Вы часто тратите слишком много времени на расчёт сечений? Программное обеспечение Dlubal и автономная программа RSECTION облегчают вашу работу, определяя характеристики и выполняя расчёт напряжений для различных сечений.
Вы всегда знаете, откуда дует ветер? Конечно, со стороны инноваций! RWIND 2 - это программа, которая использует цифровую аэродинамическую трубу для численного моделирования потоков ветра. Программа моделирует эти потоки вокруг зданий любой геометрической формы и определяет ветровые нагрузки на поверхности.
Вам нужен обзор зон снеговой, ветровой и сейсмической нагрузок? Тогда вы находитесь по адресу. Используйте инструмент Geo-Zone Tool для быстрого и лёгкого определения снеговых нагрузок, скоростей ветра и данных по сейсмике в соответствии с ASCE 7‑16 и другими нормативами различных стран.
Хотите попробовать в работе функции программ Dlubal Software? У вас есть такая возможность! Бесплатная полная версия на 90 дней позволяет вам в полной мере попробовать в работе все наши программы.
В примере программы сначала создаётся консоль из IPE 200. К ней прилагается нагрузка на стержень 3,5 кН, и выполняется расчёт.
Доступ к этой таблице находится в строке 34:
Метод ResultTables.NodesDeformations () требует три аргумента. Во-первых, определите, какие типы результатов должны быть считаны. Это могут быть результаты по
ResultTables.NodesDeformations ()
sein.
Во-вторых, укажите номер загружения, сочетания нагрузок и т. д. Наконец, передайте номер узла в метод.
Возвращаемое значение d метода - это список, включенный в словарь. В строке 37 d отображается полностью. Строка 40 показывает, как получить доступ к определённому значению. [0] - это индекс списка, а [' displacement_z '] - это ключ словаря.
d
[0]
[' displacement_z ']
Во время расчета в окне решателя RFEM 6 и RSTAB 9 отображается диаграмма сходимости (рисунок 1).
Zum Einfügen und Editieren der Berechnungsdiagramme wurde eine neue Hauptgruppe eingeführt. Sie finden diese im Daten-Navigator unterhalb der Gruppe 'Lasten'. In den Ergebnistabellen lassen sich die Berechnungsdiagramme ebenfalls aufrufen, sofern Sie welche definiert haben (siehe Bild 02).
Wenn Sie einen Lastfall oder eine Kombination über mehrere Laststufen berechnen, aktivieren Sie in den Statikanalyse-Einstellungen zusätzlich das Speichern der Ergebnisse aller Laststufen (siehe Bild 03). Anderenfalls werden im Berechnungsdiagramm nur die Ergebnisse des höchsten Inkrements angezeigt.
Der Dialog 'Berechnungsdiagramm bearbeiten' wird in Bild 04 gezeigt.
Um ein nicht lineares Element wie ein Stabendgelenk mit Diagramm oder Ausfall anlegen zu können, muss zunächst das Stabendgelenk angelegt werden. Wenn RFEM das Stabendgelenk kennt, kann dieses über die Schnittstelle IMemberEndRelease geholt werden. Diese Schnittstelle verfügt dann über die Methoden GetData() und SetData(). Beide Methoden sind in der Lage sowohl die einfachen Stabendgelenkdaten vom Typ MemberEndRelease als auch die Daten einer Nichtlinearität auszulesen bzw. zu schreiben.
Im folgenden Beispiel wird in Stabendgelenk zunächst für die x-Richtung ein Gelenk aktiviert und dann als Nichtlinearität in x-Richtung der Typ WorkingDiagramType eingestellt. Nachdem diese Daten mithilfe eines Prepare-Finish-Modification-Blocks an RFEM übergeben wurden, legt dieses intern die Nichtlinearität an. Um diese mit Daten zu füllen, werden zunächst die vorhandenen Daten über GetData() von der Schnittstelle des Stabendgelenks geholt.
Nachdem die Daten (NonlinearityDiagram) ausgefüllt wurden, werde diese wieder mit SetData() übergeben:
Sub SetNLDiagram()Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")On Error GoTo eDim iApp As RFEM5.ApplicationSet iApp = model.GetApplicationiApp.LockLicenseiApp.ShowDim iModelData As RFEM5.iModelDataSet iModelData = model.GetModelData' modify member end release' set nonlinearity "Diagram" for x translationDim iMemHing As RFEM5.IMemberHingeSet iMemHing = iModelData.GetMemberHinge(1, AtNo)Dim memHing As RFEM5.MemberHingememHing = iMemHing.GetData()memHing.TranslationalConstantX = 0memHing.TranslationalNonlinearityX = WorkingDiagramType' Set new dataiModelData.PrepareModificationiMemHing.SetData memHingiModelData.FinishModification' create diagramDim tbl1() As DoubleReDim tbl1(1, 1)tbl1(0, 0) = 0 ' u-xtbl1(0, 1) = 0 ' P-xtbl1(1, 0) = 0.02 ' u-x (mm)tbl1(1, 1) = 2000 ' P-x (N)Dim nldHing As RFEM5.NonlinearityDiagramnldHing.ForceType = StiffnessDiagramForceType.NoneStiffnessForcenldHing.PositiveZoneType = DiagramAfterLastStepType.TearingDiagramTypenldHing.PositiveZone = tbl1nldHing.Symmetric = TrueDim iNldiag As RFEM5.INonlinearityDiagramSet iNldiag = iMemHing.GetNonlinearity(AlongAxisX)' Set new dataiModelData.PrepareModificationiNldiag.SetData nldHingiModelData.FinishModificatione: If Err.Number <> 0 Then MsgBox Err.description, , Err.Sourcemodel.GetApplication.UnlockLicenseEnd Sub
Die Vorgehensweise ist für Knotenlager und andere Nichtlinearitäten analog.
Способ создания узловой опоры с диаграммой нелинейности показан в следующем макросе VBA. Исходный код затем находится в разделе Загрузки.
Деформации стержней можно считать, например, с помощью функции "GetMemberDeformations()". Однако эта функция ожидает указание номера, типа метода подсчета стержней (номер стержня/номер в списке) и то, какую систему координат следует использовать. Пользователь так может выбрать, будет ли использоваться местная система координат, система главных осей или общая система координат:
Sub test_results_member_axis()Dim iApp As RFEM5.ApplicationSet iApp = GetObject(, "RFEM5.Application")iApp.LockLicenseDim iMod As RFEM5.IModel3Set iMod = iApp.GetActiveModelOn Error GoTo e'get interface for calculationDim iCalc As RFEM5.ICalculation2Set iCalc = iMod.GetCalculation'get interface for resultsDim iRes As RFEM5.IResults2Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)'get deformations in local coordinate systemDim memDefs_L() As RFEM5.MemberDeformationsmemDefs_L = iRes.GetMemberDeformations(1, AtNo, LocalMemberAxes)'get deformations in global coordinate systemDim memDefs_G() As RFEM5.MemberDeformationsmemDefs_G = iRes.GetMemberDeformations(1, AtNo, GlobalAxes)'get deformations in principal coordinate systemDim memDefs_P() As RFEM5.MemberDeformationsmemDefs_P = iRes.GetMemberDeformations(1, AtNo, LocalPrincipalAxes)e:If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.SourceiMod.GetApplication.UnlockLicenseSet iMod = NothingEnd Sub
Эта небольшая программа способна считать местные деформации (memDefs_L) в осях стержня и главных осях (memDefs_P), а также общие деформации в осях стержня (memDefs_G).
Как и все остальные результаты, результирующую сечения можно считывать с помощью команды IModel3 → ICalculation2 → IResults2. Интерфейс результатов обеспечивается посредством функции GetResultant, которая при указании номера желаемого сечения и типа распределения результатов способна вернуть структуру ResultantForce. В данной структуре отображаются, среди прочего, также силы и моменты в виде векторов:
Программа RWIND Simulation создает вокруг модели из RFEM оболочку в виде твердой сетки.
Из-за воздушного потока вокруг этой оболочки возникает дискретное распределение давления на поверхности, которое чередуется между положительными и отрицательными значениями. В программе RWIND Simulation это поверхностное давление четко отображается на внешней стороне оболочки.
При передаче данных в RFEM, программа преобразует эти давления на внешней поверхности твердой оболочки обратно в конструктивную модель RFEM. В этом случае поверхностные давления снова преобразуются вокруг
Таким образом, внутреннее и внешнее давление конструктивного элемента по отношению к нагрузкам нетто упрощено для расчета в программе RFEM.
У «двусторонних» элементов давление на поверхность всегда будет отличаться в программе RFEM и RWIND Simulation из-за сочетания давления на поверхность в результирующем давлении.
Кроме того, при интерпретации давления ветра в программе RFEM необходимо учитывать и ориентацию систем координат элемента. Отображаемые значения давления относятся не к знаку (положительное - давление и отрицательное - подсос), как в RWIND Simulation, а к местной системе координат соответствующих элементов.
Да, напряжения на поверхности можно отобразить также через интерфейс COM. Однако для этого вам потребуется сначала интерфейс для модели (IModel), а потом интерфейс для расчета (ICalculation2). С помощью данного интерфейса затем можно получить интерфейс для результатов (IResults2):
Sub stresses_surfaces_example()Dim iApp As RFEM5.ApplicationDim iModel As RFEM5.modelSet iModel = GetObject(, "RFEM5.Model")On Error GoTo EIf Not iModel Is Nothing Then' get interface from modelSet iApp = iModel.GetApplication iApp.LockLicense ' get interface from calculation Dim iCalc As RFEM5.ICalculation2 Set iCalc = iModel.GetCalculation ' get interface from results from loadcase 1Dim iRes As RFEM5.IResults2 Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1) ' get equivalent stressesDim str_equ() As RFEM5.SurfaceEquivalentStressesstr_equ = iRes.GetSurfaceEquivalentStresses(1, AtNo, VonMisesHypothesis) End IfE:If Err.Number <> 0 ThenMsgBox Err.Number & " " & Err.descriptionEnd IfIf Not iApp Is Nothing Then iApp.UnlockLicenseEnd If
Функция GetSurfaceEquivalentStresses затем требует задания расчетной гипотезы. В данном примере у нас будут отображать результаты напряжения по фон Мизесу. Не забудьте, что в интерфейсе COM используются единицы SI, поэтому напряжение передается всегда в Н/м².
Sub test_section()' get interface from the opened model and lock the licence/program Dim iModel As RFEM5.IModel3 Set iModel = GetObject(, "RFEM5.Model") iModel.GetApplication.LockLicense On Error GoTo E Dim iSecs As RFEM5.ISections Set iSecs = iModel.GetSections()
' first delete all sections iSecs.PrepareModification iSecs.DeleteObjects ("All") iSecs.FinishModification ' set section on solid Dim sec As RFEM5.Section sec.EdgePointA.X = 2 sec.EdgePointA.Y = 5 sec.EdgePointA.Z = 0 sec.EdgePointB.X = 2 sec.EdgePointB.Y = 8 sec.EdgePointB.Z = 0 sec.no = 1 sec.Name = "solid section" sec.Plane = GlobalPlaneInPositiveX sec.ShowValuesInIsolines = False sec.Type = SectionOnSolidSectionLine sec.ObjectList = "1" iSecs.PrepareModification iSecs.SetSection sec iSecs.FinishModification
' set section on surface sec.EdgePointA.X = 2 sec.EdgePointA.Y = 0 sec.EdgePointA.Z = 0 sec.EdgePointB.X = 2 sec.EdgePointB.Y = 3 sec.EdgePointB.Z = 0 sec.no = 2 sec.Name = "surface section" sec.Plane = GlobalPlaneInPositiveX sec.ShowValuesInIsolines = True sec.Type = SectionViaSurfacePlane sec.ObjectList = "1" sec.Vector.X = 0 sec.Vector.Y = 0 sec.Vector.Z = 1 iSecs.PrepareModification iSecs.SetSection sec iSecs.FinishModification
' get results Dim iCalc As ICalculation2 Set iCalc = iModel.GetCalculation Dim iRes As IResults2 Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1) Dim secRes() As RFEM5.SectionResult secRes = iRes.GetResultsInSection(2, AtNo, ShearForceVy,ContinuousDistributionWithinObjects, False)
Es stehen zwei Auswahlmöglichkeiten zur Verfügung: eine automatische Zeitschrittwahl und eine manuelle. Gerade für eine Struktur mit Nichtlinearitäten wird immer empfohlen, den Zeitschritt manuell zu wählen, da die automatische Ermittlung nur anhand der definierten Akzelerogramme bzw. Zeitdiagramme durchgeführt wird. Dafür sollte eine Zeitschrittkonvergenzstudie durchgeführt werden, welche die Berechnungszeit und die Genauigkeit ins Verhältnis setzt.
Der zu wählende Zeitschritt ist von vielen Faktoren abhängig, darunter die Erregungsfrequenz, die Frequenz und die Größe der Struktur, sowie der Grad an Nichtlinearitäten. Es kann also keine allgemeingültige Aussage über die Größe des Zeitschritts getroffen werden.
Um eine ausreichende Genauigkeit zu erreichen, sollte die maßgebende Periode T = 1/f in etwa 20 Schritte unterteilt werden, d. h. der Zeitschritt Δt ist wie folgt zu wählen:
$\mathrm{Δt}\;<\frac{\mathrm T}{20}\;=\;\frac1{20\mathrm f}\;=\;\frac{\mathrm\pi}{10\mathrm\omega\;}$
Für transient definierte Anregungen, wie Akzelerogramme oder tabellierte Zeitdiagramme, sollte der kürzeste Zeitabschnitt in 7 Schritte unterteilt werden:
$\mathrm{Δt}\;=\;\frac{\mathrm{Min}\left\{{\mathrm t}_{\mathrm i+1}\right.-\;{\mathrm t}_{\mathrm i}\}\;}7$
Unabhängig der Berechnung werden Zeitschritte zum Speichern der Ergebnisse angegeben.
Dim model As RFEM5.modelSet model = GetObject(, "RFEM5.Model")model.GetApplication.LockLicenseOn Error GoTo eDim data As IModelDataSet data = model.GetModelDataРазмеры стержней (0) Как в RFEM5.Member стержней (0) .No = 3стержней (0) .LineNo = 12члены (0) .Type = ResultBeamType стержни (0) .StartCrossSectionNo = 1стержни (0) .EndCrossSectionNo = 1 стержни (0) .Comment = "результирующая балка 1"data.PrepareModificationэлементы data.SetMembersdata.FinishModification
Dim iMem As IMemberУстановите iMem = data.GetMember (3, AtNo) Dim iRMem как IResultBeamУстановите iRMem = iMem.GetExtraData Dim RMem как ResultBeamRMem = iRMem.GetData RMem.IncludeSurfaces = "1"RMem.IncludeSolids = "все" RMem.Integrate = WithinCuboidGeneral Дим параметры (от 0 до 3) как двойные RMem.Parameters = параметрыRMem.Parameters (0) = 0,5RMem.Parameters (1) = 0,5RMem.Parameters (2) = 0,1RMem.Parameters (3) = 0,1 data.PrepareModificationiRMem.SetData RMemdata.FinishModification
Ja, Lagerkräfte einzelner Flächen können im RFEM-Tabellenfenster in Tabelle "4.21 Flächen - Kontaktspannungen" angezeigt werden. Данную таблицу можно открыть, щелкнув правой кнопкой мыши по одной из вкладок таблицы «4.xx - Результаты» (см. Рисунок 01).
Кроме контактных напряжений, отображаются также соответствующие опорные силы (см. Рисунок 02).